﻿using System;
using System.Threading.Tasks;

namespace Mt.Site.Core.WorkFlows.Common
{
    public interface IOnWeeksChecker
    {
        Task<bool> CheckIsOnDudyDateAsync(DateTime date);

        bool CheckIsOnDudyDate(DateTime date);

        /// <summary>
        /// 到今天向前计数dayCount天 （今天算一天）
        /// </summary>
        /// <param name="dayCount"></param>
        /// <returns></returns>
        Task<DateTime> CheckDaysToNowAsync(int dayCount);

        DateTime CheckDaysToNow(int dayCount);

        /// <summary>
        /// 到今天向前计数dayCount天（今天算一天）， 返回时间戳 毫秒
        /// </summary>
        /// <param name="dayCount"></param>
        /// <returns></returns>
        Task<long> CheckDaysToNow_UnixAsync(int dayCount);

        long CheckDaysToNow_Unix(int dayCount);

        /// <summary>
        /// 从今天向后算（今天算一天），dayCount天后的日期（0点）
        /// </summary>
        /// <param name="dayCount">大于0，  小于等于0则返回当前时间</param>
        /// <returns></returns>
        Task<DateTime> CheckDaysFromNowAsync(int dayCount);

        /// <summary>
        /// 从今天向后算（今天算一天），dayCount天后的日期（0点）
        /// </summary>
        /// <param name="dayCount">大于0，  小于等于0则返回当前时间</param>
        /// <returns></returns>
        DateTime CheckDaysFromNow(int dayCount);

        /// <summary>
        /// 从今天向后算（今天算一天），dayCount天后的日期（0点）， 返回时间戳 毫秒
        /// </summary>
        /// <param name="dayCount">大于0，  小于等于0则返回当前时间</param>
        /// <returns></returns>
        Task<long> CheckDaysFromNow_UnixAsync(int dayCount);

        long CheckDaysFromNow_Unix(int dayCount);

        Task<ScheduleSetting> GetSettingInfoAsync();

        ScheduleSetting GetSettingInfo();
    }
}
